package com.mall.util.tree.rb;

public interface RBTree<K extends Comparable<K>, V> {
    /**
     * 在红黑树中插入结点
     * @param k 下标
     * @param v 值
     */
    default void insertNode(K k, V v) {
        insertNode(new RBNode(k, v));
    }

    /**
     * 在红黑树中插入结点
     * @param node 结点
     */
    void insertNode(RBNode node);

    /**
     * 在红黑树中删除结点
     * @param node 结点
     */
    void deleteNode(RBNode node);

    /**
     * 在红黑树中搜索结点
     * @param k 结点值
     */
    RBNode searchNode(K k);

    /**
     * 在红黑树中搜索结点
     * @param node 结点
     */
    RBNode searchNode(RBNode node);

    /**
     * 打印红黑树
     */
    void printTree();
}
